package org.example.util;

import java.util.ArrayList;
import java.util.List;

import static org.example.enums.ChargeFlag.*;
import static org.example.enums.ChargeStatus.*;

public class ChargeStatusUtil {
    private ChargeStatusUtil(){}

    /**
     * 用于将Battery_Status转换为三方请求中的充放电状态chargeStatus
     * @param chargeStatus
     * @return
     */
    public static Integer decode(Integer chargeStatus) {
        switch (chargeStatus){
            case 67:
                return FAST_CHARGE.chargeStatus; // 1 快充
            case 68:
                return DISCHARGE.chargeStatus; // 0 放电
            case 78:
                return NOLOAD.chargeStatus; // 4 空载
            default:
                return chargeStatus;
        }
    }

    /**
     * 用于获取最近一次充放电记录接口
     * @param currentStatus
     * @return
     */
    public static List<Integer> getStatusChangeCodeList(int currentStatus) {
        List<Integer> codeList = new ArrayList<>();

        switch (currentStatus){
            case 1: //  充电 找开始充电1
                codeList.add(STARTCHARGE.chargeFlag); // 开始充电
                break;
            case 0: //  放电 找开始放电 3
                codeList.add(STARTDISCHARGE.chargeFlag);
                break;
            case 4: // N 静置 找最近的开始充电或放电
                codeList.add(STARTCHARGE.chargeFlag);
                codeList.add(STARTDISCHARGE.chargeFlag);
                break;
                // 再增加状态时此处需要继续增加情况
            default:
                codeList.add(0);
                break;
        }

//        switch (currentStatus){
//            case 67: // C 充电
//                codeList.add(DS2FS.statusChangeCode);
//                codeList.add(NL2FS.statusChangeCode);
//                break;
//            case 68: // D 放电
//                codeList.add(NL2DS.statusChangeCode);
//                codeList.add(FS2DS.statusChangeCode);
//                break;
//            case 78: // N 静置
//                codeList.add(FS2NL.statusChangeCode);
//                codeList.add(DS2NL.statusChangeCode);
//                break;
//            default: ;
//                codeList.add(0);
//                break;
//        }

        return codeList;
    }
    public static List<Integer> getStatusChangeCodeEndList(int startFlag) {
        List<Integer> codeList = new ArrayList<>();
        switch (startFlag){
            case 1: // 初始状态是开始充电 STARTCHARGE.chargeFlag
                codeList.add(ENDCHARGE.chargeFlag); // 结束充电充电
                codeList.add(CHARGING.chargeFlag);// 充电中，先遇到这个说明当前还在充电
                break;
            case 3: // 初始状态是开始放电
                codeList.add(ENDDISCHARGE.chargeFlag); // 开始放电
                codeList.add(DISCHAGING.chargeFlag); // 放电中，先遇到这个说明当前还在放电
                break;
            default:
                codeList.add(0);
                break;
        }


        return codeList;
    }
}
